package set_;

import java.util.Comparator;
import java.util.TreeSet;

/**
 * @author DCSGO
 * @version 1.0
 */

@SuppressWarnings({"all"})
public class TreeSet_ {
    public static void main(String[] args) {
        //当我们通过无参构造器 创建一个 TreeSet 后
        //添加的数据在输出时仍是无序的
        //这时我们就需要在构造器中传入一个比较器
        //就可以使 TreeSet 中的元素有序
        TreeSet treeSet = new TreeSet();
        treeSet.add("a");
        treeSet.add("b");
        treeSet.add("cba");
        treeSet.add("ab");
        System.out.println(treeSet);
        //[a, ab, b, cba]

        TreeSet treeSet1 = new TreeSet(new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                return ((String) o1).compareTo((String) o2);
            }
        });
        treeSet1.add("a");
        treeSet1.add("b");
        treeSet1.add("cba");
        treeSet1.add("ab");
        System.out.println(treeSet1);
        //[a, ab, b, cba]

        //当然我们也可以自定义其他的比较器
        //字符串的长度
        TreeSet treeSet2 = new TreeSet(new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                return ((String) o1).length() - ((String) o2).length();
            }
        });
        treeSet2.add("a");
        treeSet2.add("b");//插入失败
        treeSet2.add("cba");
        treeSet2.add("ab");
        System.out.println(treeSet2);
        //[a, ab, cba]
        //在插入时会通过传入的比较器进行添加
        //所以比较器同时也会影响元素的插入
    }
}
